import crypto from "crypto";

export class StringUtils {
    static secureHash(password:string) {
        const salt = crypto.randomBytes(16).toString('hex'); // 生成随机盐值（16字节）
        const iterations = 100000;                          // 迭代次数（越高越安全）
        const keylen = 64;                                  // 输出长度（字节）

        const hash = crypto.pbkdf2Sync(
            password,
            salt,
            iterations,
            keylen,
            'sha256'          // 使用 SHA-256 作为基础哈希
        ).toString('hex');

        return `${salt}:${iterations}:${hash}`;
    }

    /**
     * 验证密码
     * @param {string} password - 待验证密码
     * @param {string} storedHash - 存储的哈希字符串（salt:iterations:hash）
     */
    static verifyPassword(password:string, storedHash:string) {
        const [salt, iterations, originalHash] = storedHash.split(':');
        const hash = crypto.pbkdf2Sync(
            password,
            salt,
            parseInt(iterations),
            64,
            'sha256'
        ).toString('hex');

        return hash === originalHash; // 安全地比较哈希值
    }
}